﻿Imports System.Data.SqlClient
Public Class frmNominaInterface
    Dim Inter As New clsInterfazNominas
    Private Sub frmNominaInterface_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ToolStrip1.Cursor = Cursors.Hand
        ToolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System
        pgAvance.Visible = False

        Periodos()
        txtEjercicio.Text = Now.Year
        txtNomina.Text = frmNomina.txtNomina.Text

    End Sub
    Sub Periodos()

        lstPeriodos.Items.Clear()

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = NominasConnection

        Dim strSql As String = ""
        strSql = "SELECT NombreTipoPeriodo FROM NOM10023"

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Do While rdBuscar.Read()
            lstPeriodos.Items.Add(rdBuscar("NombreTipoPeriodo").ToString.Trim)
        Loop
    End Sub
    Sub EnviarNominas()
        'Primero Genera Valores para progress Bar
        Dim Columnas As Integer = frmNomina.dgNomina.Columns.Count - 9
        Dim Renglones As Integer = frmNomina.dgNomina.Rows.Count
        Dim Registros As Integer = Columnas * Renglones
        Dim Actual As Integer = 0

        With pgAvance
            .Maximum = Registros
            .Minimum = 0
            .Value = 0
        End With

        'Obtiene valores generales
        Dim IdTipoPeriodo As Integer = BuscarIntDatoNominas("NOM10023", "IdTipoPeriodo", "NombreTipoPeriodo='" & lstPeriodos.Text & "'")
        Dim IdPeriodo As Integer = BuscarIntDatoNominas("NOM10002", "IdPeriodo", "IdTipoPeriodo=" & IdTipoPeriodo & " AND NumeroPeriodo=" & txtNomina.Text & " AND Ejercicio=" & txtEjercicio.Text)
        Dim IdEmpleado As Integer = 0
        Dim IdConcepto As Integer = 0
        Dim IdMovtoPDO As Integer = 0
        Dim IdEmpleadoPeriodo As Integer = 0
        Dim Status As String = ""
        Dim CadenaOtroPeriodo As String = ""
        Dim CadenaBajas As String = ""
        Dim CuentaOtroPeriodo As Integer = 0
        Dim CuentBajas As Integer = 0

        'GUARDA DESCUENTOS DINAMICOS********************************************************************
        Dim j As Integer
        Dim NombreAdeudo As String = ""

        For I = 0 To frmNomina.dgNomina.Rows.Count - 1
            IdEmpleado = BuscarIntDatoNominas("NOM10001", "IdEmpleado", "CodigoEmpleado='" & frmNomina.dgNomina.Rows(I).Cells(1).Value.ToString.Trim & "'")
            IdEmpleadoPeriodo = BuscarIntDatoNominas("NOM10034", "IdEmpleado", "IdEmpleado=" & IdEmpleado & " AND IdTipoPeriodo=" & IdTipoPeriodo)
            If IdEmpleadoPeriodo = 0 Then
                CadenaOtroPeriodo = CadenaOtroPeriodo & ", " & Trim(BuscarStrDatoNominas("NOM10001", "NombreLargo", "IdEmpleado=" & IdEmpleado))
                CuentaOtroPeriodo = CuentaOtroPeriodo + 1
                Actual = Actual + 1
            Else
                Status = Trim(BuscarStrDatoNominas("NOM10001", "EstadoEmpleado", "IdEmpleado=" & IdEmpleado))
                If Status.Trim = "B" Then
                    CadenaBajas = CadenaBajas & ", " & Trim(BuscarStrDatoNominas("NOM10001", "NombreLargo", "IdEmpleado=" & IdEmpleado))
                    CuentBajas = CuentBajas + 1
                    Actual = Actual + 1
                Else
                    'SUELDO*************************************************************************************************************************************************
                    IdConcepto = 3
                    IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                    If IdMovtoPDO = 0 Then
                        Inter.IdPeriodo = IdPeriodo
                        Inter.IdEmpleado = IdEmpleado
                        Inter.IdConcepto = IdConcepto
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(5).Value
                        Inter.ImporteTotalReportado = 1
                        Inter.TimeStamp = Now()
                        Inter.Insertar()
                    Else
                        Inter.IdMovtoPDO = IdMovtoPDO
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(5).Value
                        Inter.TimeStamp = Now()
                        Inter.Actualizar()
                    End If
                    Actual = Actual + 1
                    pgAvance.Value = Actual
                    Application.DoEvents()

                    'AYUDA PARA DESPENSA*************************************************************************************************************************************
                    'IdEmpleado = frmNomina.dgNomina.Rows(I).Cells(0).Value
                    IdConcepto = 132
                    IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                    If IdMovtoPDO = 0 Then
                        Inter.IdPeriodo = IdPeriodo
                        Inter.IdEmpleado = IdEmpleado
                        Inter.IdConcepto = IdConcepto
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(6).Value
                        Inter.ImporteTotalReportado = 1
                        Inter.TimeStamp = Now()
                        Inter.Insertar()
                    Else
                        Inter.IdMovtoPDO = IdMovtoPDO
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(6).Value
                        Inter.TimeStamp = Now()
                        Inter.Actualizar()
                    End If
                    Actual = Actual + 1
                    pgAvance.Value = Actual
                    Application.DoEvents()

                    'HORAS EXTRAS********************************************************************************************************************************************
                    'IdEmpleado = frmNomina.dgNomina.Rows(I).Cells(0).Value
                    IdConcepto = 5
                    IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                    If IdMovtoPDO = 0 Then
                        Inter.IdPeriodo = IdPeriodo
                        Inter.IdEmpleado = IdEmpleado
                        Inter.IdConcepto = IdConcepto
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(7).Value
                        Inter.ImporteTotalReportado = 1
                        Inter.TimeStamp = Now()
                        Inter.Insertar()
                    Else
                        Inter.IdMovtoPDO = IdMovtoPDO
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(7).Value
                        Inter.TimeStamp = Now()
                        Inter.Actualizar()
                    End If
                    Actual = Actual + 1
                    pgAvance.Value = Actual
                    Application.DoEvents()

                    'DEPORTE Y CULTURA***************************************************************************************************************************************
                    'IdEmpleado = frmNomina.dgNomina.Rows(I).Cells(0).Value
                    IdConcepto = 32
                    IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                    If IdMovtoPDO = 0 Then
                        Inter.IdPeriodo = IdPeriodo
                        Inter.IdEmpleado = IdEmpleado
                        Inter.IdConcepto = IdConcepto
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(8).Value
                        Inter.ImporteTotalReportado = 1
                        Inter.TimeStamp = Now()
                        Inter.Insertar()
                    Else
                        Inter.IdMovtoPDO = IdMovtoPDO
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(8).Value
                        Inter.TimeStamp = Now()
                        Inter.Actualizar()
                    End If
                    Actual = Actual + 1
                    pgAvance.Value = Actual
                    Application.DoEvents()

                    'PREMIO DE PUNTUALIDAD**********************************************************************************************************************************
                    'IdEmpleado = frmNomina.dgNomina.Rows(I).Cells(0).Value
                    IdConcepto = 147
                    IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                    If IdMovtoPDO = 0 Then
                        Inter.IdPeriodo = IdPeriodo
                        Inter.IdEmpleado = IdEmpleado
                        Inter.IdConcepto = IdConcepto
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(9).Value
                        Inter.ImporteTotalReportado = 1
                        Inter.TimeStamp = Now()
                        Inter.Insertar()
                    Else
                        Inter.IdMovtoPDO = IdMovtoPDO
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(9).Value
                        Inter.TimeStamp = Now()
                        Inter.Actualizar()
                    End If
                    Actual = Actual + 1
                    pgAvance.Value = Actual
                    Application.DoEvents()

                    'PREMIO DE ASISTENCIA************************************************************************************************************************************
                    'IdEmpleado = frmNomina.dgNomina.Rows(I).Cells(0).Value
                    IdConcepto = 146
                    IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                    If IdMovtoPDO = 0 Then
                        Inter.IdPeriodo = IdPeriodo
                        Inter.IdEmpleado = IdEmpleado
                        Inter.IdConcepto = IdConcepto
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(10).Value
                        Inter.ImporteTotalReportado = 1
                        Inter.TimeStamp = Now()
                        Inter.Insertar()
                    Else
                        Inter.IdMovtoPDO = IdMovtoPDO
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(10).Value
                        Inter.TimeStamp = Now()
                        Inter.Actualizar()
                    End If
                    Actual = Actual + 1
                    pgAvance.Value = Actual
                    Application.DoEvents()

                    'GRATIFICACION*******************************************************************************************************************************************
                    'IdEmpleado = frmNomina.dgNomina.Rows(I).Cells(0).Value
                    IdConcepto = 13
                    IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                    If IdMovtoPDO = 0 Then
                        Inter.IdPeriodo = IdPeriodo
                        Inter.IdEmpleado = IdEmpleado
                        Inter.IdConcepto = IdConcepto
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(11).Value
                        Inter.ImporteTotalReportado = 1
                        Inter.TimeStamp = Now()
                        Inter.Insertar()
                    Else
                        Inter.IdMovtoPDO = IdMovtoPDO
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(11).Value
                        Inter.TimeStamp = Now()
                        Inter.Actualizar()
                    End If
                    Actual = Actual + 1
                    pgAvance.Value = Actual
                    Application.DoEvents()
                    'TARJETA*************************************************************************************************************************************************
                    'IdEmpleado = frmNomina.dgNomina.Rows(I).Cells(0).Value
                    IdConcepto = 138
                    IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                    If IdMovtoPDO = 0 Then
                        Inter.IdPeriodo = IdPeriodo
                        Inter.IdEmpleado = IdEmpleado
                        Inter.IdConcepto = IdConcepto
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(14).Value
                        Inter.ImporteTotalReportado = 1
                        Inter.TimeStamp = Now()
                        Inter.Insertar()
                    Else
                        Inter.IdMovtoPDO = IdMovtoPDO
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(14).Value
                        Inter.TimeStamp = Now()
                        Inter.Actualizar()
                    End If
                    Actual = Actual + 1
                    pgAvance.Value = Actual
                    Application.DoEvents()

                    'INFONAVIT*************************************************************************************************************************************************
                    'IdEmpleado = frmNomina.dgNomina.Rows(I).Cells(0).Value
                    IdConcepto = BuscarIntDatoCitra("Adeudos", "IdConcepto", "Nombre='Infonavit'")
                    IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                    If IdMovtoPDO = 0 Then
                        Inter.IdPeriodo = IdPeriodo
                        Inter.IdEmpleado = IdEmpleado
                        Inter.IdConcepto = IdConcepto
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(15).Value
                        Inter.ImporteTotalReportado = 1
                        Inter.TimeStamp = Now()
                        Inter.Insertar()
                    Else
                        Inter.IdMovtoPDO = IdMovtoPDO
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(15).Value
                        Inter.TimeStamp = Now()
                        Inter.Actualizar()
                    End If
                    Actual = Actual + 1
                    pgAvance.Value = Actual
                    Application.DoEvents()

                    'FONACOT*************************************************************************************************************************************************
                    'IdEmpleado = frmNomina.dgNomina.Rows(I).Cells(0).Value
                    IdConcepto = BuscarIntDatoCitra("Adeudos", "IdConcepto", "Nombre='Fonacot'")
                    IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                    If IdMovtoPDO = 0 Then
                        Inter.IdPeriodo = IdPeriodo
                        Inter.IdEmpleado = IdEmpleado
                        Inter.IdConcepto = IdConcepto
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(16).Value
                        Inter.ImporteTotalReportado = 1
                        Inter.TimeStamp = Now()
                        Inter.Insertar()
                    Else
                        Inter.IdMovtoPDO = IdMovtoPDO
                        Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(16).Value
                        Inter.TimeStamp = Now()
                        Inter.Actualizar()
                    End If
                    Actual = Actual + 1
                    pgAvance.Value = Actual
                    Application.DoEvents()
                End If 'Descuentos dinamicos

                If frmNomina.dgNomina.Columns.Count > 19 Then
                    IdEmpleado = BuscarIntDatoNominas("NOM10001", "IdEmpleado", "CodigoEmpleado='" & frmNomina.dgNomina.Rows(I).Cells(1).Value.ToString.Trim & "'")
                    For j = 17 To frmNomina.dgNomina.Columns.Count - 3
                        'FONACOT*************************************************************************************************************************************************
                        'IdEmpleado = frmNomina.dgNomina.Rows(I).Cells(0).Value
                        NombreAdeudo = frmNomina.dgNomina.Columns(j).HeaderText.Trim.Trim
                        IdConcepto = BuscarIntDatoCitra("Adeudos", "IdConcepto", "Nombre='" & NombreAdeudo & "'")
                        IdMovtoPDO = BuscarIntDatoNominas("NOM10008", "IdMovtoPDO", "IdPeriodo=" & IdPeriodo & " AND IdEmpleado=" & IdEmpleado & " AND IdConcepto=" & IdConcepto)
                        If IdMovtoPDO = 0 Then
                            Inter.IdPeriodo = IdPeriodo
                            Inter.IdEmpleado = IdEmpleado
                            Inter.IdConcepto = IdConcepto
                            Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(j).Value
                            Inter.ImporteTotalReportado = 1
                            Inter.TimeStamp = Now()
                            Inter.Insertar()
                        Else
                            Inter.IdMovtoPDO = IdMovtoPDO
                            Inter.ImporteTotal = frmNomina.dgNomina.Rows(I).Cells(j).Value
                            Inter.TimeStamp = Now()
                            Inter.Actualizar()
                        End If
                        Actual = Actual + 1
                        pgAvance.Value = Actual
                        Application.DoEvents()
                    Next
                End If
            End If
        Next

        If CuentaOtroPeriodo > 1 Then
            MsgBox("Los empleados " & Mid(CadenaOtroPeriodo, 3) & " fuerón omitidos del proceso porque no pertenecen al periodo " & lstPeriodos.Text, MsgBoxStyle.Exclamation, "Aviso")
        ElseIf CuentaOtroPeriodo = 1 Then
            MsgBox("El empleado " & Mid(CadenaOtroPeriodo, 3) & " fué omitido del proceso porque no pertenece al periodo " & lstPeriodos.Text, MsgBoxStyle.Exclamation, "Aviso")
        End If

        If CuentBajas > 1 Then
            MsgBox("Los empleados " & Mid(CadenaBajas, 3) & " fuerón omitidos del proceso porque estan registrados como baja ", MsgBoxStyle.Exclamation, "Aviso")
        ElseIf CuentBajas = 1 Then
            MsgBox("El empleado " & Mid(CadenaBajas, 3) & " fué omitido del proceso porque esta registrado como baja ", MsgBoxStyle.Exclamation, "Aviso")
        End If
        



    End Sub
    Sub EnviaENCEROS()
        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = NominasConnection

        Dim IdTipoPeriodo As Integer = BuscarIntDatoNominas("NOM10023", "IdTipoPeriodo", "NombreTipoPeriodo='" & lstPeriodos.Text & "'")
        Dim IdPeriodo As Integer = BuscarIntDatoNominas("NOM10002", "IdPeriodo", "IdTipoPeriodo=" & IdTipoPeriodo & " AND NumeroPeriodo=" & txtNomina.Text & " AND Ejercicio=" & txtEjercicio.Text)


        Dim strSql As String = ""
        strSql = "SELECT IDEmpleado FROM NOM10034 WHERE IDTipoPeriodo=" & IdTipoPeriodo

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim Empleado As Integer = 0

        Do While rdBuscar.Read()
            Empleado = BuscarIntDatoNominas("SELECT IDEmpleado FROM NOM10008 WHERE IDEMPLEADO=" & rdBuscar("IDEmpleado") & " AND IDPeriodo=" & IdPeriodo)
            If Empleado = 0 Then
                Inter.IdPeriodo = IdPeriodo
                Inter.IdEmpleado = rdBuscar("IdEmpleado")
                Inter.IdConcepto = 3
                Inter.ImporteTotal = 0
                Inter.ImporteTotalReportado = 1
                Inter.TimeStamp = Now()
                Inter.Insertar()
            End If
        Loop
    End Sub
    Private Sub ToolStripButton4_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton4.Click
        Close()

    End Sub

    Private Sub ToolStripButton1_Click(sender As System.Object, e As System.EventArgs) Handles ToolStripButton1.Click
        If lstPeriodos.Text = "" Then
            MsgBox("Debes seleccionar el periodo", MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub
        End If

        If txtEjercicio.Text = "" Then
            MsgBox("Debes indicar el ejercicio", MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub

        End If

        If txtNomina.Text = "" Then
            MsgBox("Debes indicar el numero de nomina", MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub
        End If

        pgAvance.Visible = True

        EnviarNominas()
        EnviaENCEROS()

        Close()

    End Sub
End Class